package com.qk.config;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;

import java.io.IOException;
import java.util.List;

/**
 * 将数组或字符串统一反序列化为字符串
 * @author 28188
 */
public class StringArrayToStringDeserializer extends JsonDeserializer<String> {

    @Override
    public String deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
        JsonToken token = p.getCurrentToken();

        if (token == JsonToken.START_ARRAY) {
            // 如果是数组，读取数组并转换为字符串格式
            List<Object> list = p.readValueAs(List.class);
            // 转换为 "[元素1, 元素2, 元素3]" 格式
            return list.toString();
        } else if (token == JsonToken.VALUE_STRING) {
            // 如果是字符串，直接返回
            return p.getValueAsString();
        } else if (token == JsonToken.VALUE_NULL) {
            // 如果是null，返回null
            return null;
        }

        // 其他类型，尝试作为字符串处理
        return p.getValueAsString();
    }
}